package com.example.myFirstWebmagic.demo;

import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map.Entry;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
/**
 * @Description: 样例代码（抓取环保部数据中心的空气质量）
 * @param @param args   
 * @return void  
 * @throws
 * @author xiongyao
 * @date 2016-12-21
 */
@SuppressWarnings("deprecation")
public class GaoxiaoDemo{

	
	public static void main(String[] args) throws ClientProtocolException, IOException {
		
		String[] schools={"武汉纺织大学",
				"湖北中医药大学",
				"武汉轻工大学",
				"湖北师范大学",
				"湖北汽车工业学院",
				"湖北民族学院",
				"湖北医药学院",
				"湖北经济学院",
				"湖北警官学院",
				"武汉体育学院",
				"湖北美术学院",
				"武汉音乐学院",
				"湖北文理学院",
				"湖北工程学院",
				"湖北科技学院",
				"黄冈师范学院",
				"湖北理工学院",
				"湖北第二师范学院",
				"荆楚理工学院",
				"武汉商学院",
				"汉江师范学院",
				"武汉生物工程学院",
				"武汉东湖学院",
				"汉口学院",
				"武汉工商学院",
				"武昌理工学院",
				"武昌工学院",
				"文华学院",
				"武汉工程科技学院",
				"武昌首义学院",
				"武汉学院",
				"武汉设计工程学院",
				"湖北商贸学院",
				"武汉华夏理工学院",
				"武汉传媒学院",
				"武汉晴川学院",
				"湖北大学知行学院",
				"武汉科技大学城市学院",
				"三峡大学科技学院",
				"长江大学工程技术学院",
				"长江大学文理学院",
				"江汉大学文理学院",
				"湖北工业大学工程技术学院",
				"武汉工程大学邮电与信息工程学院",
				"武汉纺织大学外经贸学院",
				"湖北汽车工业学院科技学院",
				"湖北民族学院科技学院",
				"湖北医药学院药护学院",
				"湖北经济学院法商学院",
				"武汉体育学院体育科技学院",
				"湖北师范大学文理学院",
				"湖北文理学院理工学院",
				"湖北工程学院新技术学院",
				"湖北中医药高等专科学校",
				"湖北幼儿师范高等专科学校",
				"武汉船舶职业技术学院",
				"武汉职业技术学院",
				"湖北职业技术学院",
				"武汉铁路职业技术学院",
				"黄冈职业技术学院",
				"湖北工业职业技术学院",
				"襄阳职业技术学院",
				"恩施职业技术学院",
				"荆州理工职业学院",
				"鄂州职业大学",
				"武汉软件工程职业学院",
				"荆州职业技术学院",
				"仙桃职业学院",
				"湖北轻工职业技术学院",
				"湖北交通职业技术学院",
				"武汉工程职业技术学院",
				"武汉航海职业技术学院",
				"湖北三峡职业技术学院",
				"随州职业技术学院",
				"武汉电力职业技术学院",
				"湖北水利水电职业技术学院",
				"武汉警官职业学院",
				"湖北城市建设职业技术学院",
				"湖北生物科技职业学院",
				"湖北生态工程职业技术学院",
				"咸宁职业技术学院",
				"湖北艺术职业学院",
				"武汉交通职业学院",
				"长江工程职业技术学院",
				"武汉工业职业技术学院",
				"湖北国土资源职业学院",
				"武汉民政职业学院",
				"鄂东职业技术学院",
				"湖北财税职业学院",
				"江汉艺术职业学院",
				"三峡电力职业学院",
				"湖北青年职业学院",
				"湖北工程职业学院",
				"武汉城市职业学院",
				"三峡旅游职业技术学院",
				"襄阳汽车职业技术学院",
				"湖北体育职业学院",
				"长江职业学院",
				"武汉海事职业学院",
				"湖北铁道运输职业学院",
				"荆门职业学院",
				"武汉铁路桥梁职业学院",
				"武汉工贸职业学院",
				"湖北开放职业学院",
				"武昌职业学院",
				"武汉商贸职业学院",
				"武汉信息传播职业技术学院",
				"武汉科技职业学院",
				"武汉外语外事职业学院",
				"黄冈科技职业学院",
				"湖北科技职业学院",
				"天门职业学院",
				"武当职业学院",
				"武汉光谷职业学院",
				"湖北广播电视大学",
				"武汉市广播电视大学",
				"武汉冶金管理干部学院",
				"湖北省直属机关业余大学",
				"荆州教育学院",
				"十堰教育学院"};
//		
		
//		String[] schools={"湖北中医药大学"};
		
		String api="http://api.map.baidu.com/geocoder/v2/?address=";
		String api2="&output=json&ak=sYDDhsxC9jCXFLb7nmgjXnkP4MZA4TKH&callback=showLocation";
		
		FileWriter fw = new FileWriter("E:\\demo.txt");
		for(String school:schools){
			String returnString=do_get(api+school+api2);
			returnString=returnString.substring(returnString.indexOf("(")+1, returnString.length()-1);
			returnString=returnString.replaceAll("\"", "");
			JsonObject returnData = new JsonParser().parse(returnString).getAsJsonObject();  
			System.out.println(Double.parseDouble(returnData.get("result").getAsJsonObject().get("location").getAsJsonObject().get("lng").toString())+","+Double.parseDouble(returnData.get("result").getAsJsonObject().get("location").getAsJsonObject().get("lat").toString()));
			LinkedHashMap<String, double[]> squareMap=returnLLSquarePoint(Double.parseDouble(returnData.get("result").getAsJsonObject().get("location").getAsJsonObject().get("lng").toString()),Double.parseDouble(returnData.get("result").getAsJsonObject().get("location").getAsJsonObject().get("lat").toString()),500);
			StringBuilder sb=new StringBuilder();
			sb.append(school+":");
			for(Entry<String, double[]> entry:squareMap.entrySet()){
				sb.append(entry.getValue()[1]+","+entry.getValue()[0]+";");
	        }
			fw.write(sb.toString()+"\r\n");
		}
		fw.close();
		
	}
	
	public static String do_get(String url) throws ClientProtocolException, IOException {
        String body = "{}";
        DefaultHttpClient httpclient = new DefaultHttpClient();
        try {
            HttpGet httpget = new HttpGet(url);
            HttpResponse response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity();
            body = EntityUtils.toString(entity);
        } finally {
            httpclient.getConnectionManager().shutdown();
        }
        return body;
    }
	
	/**
     * 
     * @param longitude    经度
     * @param latitude    纬度
     * @param distance    范围（米）
     * @return
     */
    public static LinkedHashMap<String, double[]> returnLLSquarePoint(double longitude,  double latitude, double distance) {
    	LinkedHashMap<String, double[]> squareMap = new LinkedHashMap<String, double[]>();
        // 计算经度弧度,从弧度转换为角度
        double dLongitude = 2 * (Math.asin(Math.sin(distance
                / (2 * 6378137))
                / Math.cos(Math.toRadians(latitude))));
        dLongitude = Math.toDegrees(dLongitude);
        // 计算纬度角度
        double dLatitude = distance / 6378137;
        dLatitude = Math.toDegrees(dLatitude);
        // 正方形
        double[] leftTopPoint = { latitude + dLatitude, longitude - dLongitude };
        double[] rightTopPoint = { latitude + dLatitude, longitude + dLongitude };
        double[] leftBottomPoint = { latitude - dLatitude,
                longitude - dLongitude };
        double[] rightBottomPoint = { latitude - dLatitude,
                longitude + dLongitude };
        
        
        dLongitude = 2 * (Math.asin(Math.sin(100
                / (100 * 6378137))
                / Math.cos(Math.toRadians(latitude))));
        dLongitude = Math.toDegrees(dLongitude);
        //偏移
        dLatitude = 100 / 6378137;
        dLatitude = Math.toDegrees(dLatitude);
        
        //中间点
        double[] top1Point = { leftTopPoint[0],leftTopPoint[1]+dLongitude};
        double[] top2Point = { leftTopPoint[0], rightTopPoint[1]-dLongitude };
        double[] right1Point = { rightTopPoint[0]-dLatitude, rightTopPoint[1] };
        double[] right2Point = { rightBottomPoint[0]+dLatitude, rightTopPoint[1] };
        double[] down1Point = { rightBottomPoint[0], rightBottomPoint[1]-dLongitude };
        double[] down2Point = { rightBottomPoint[0], leftBottomPoint[1] +dLongitude };
        double[] left1Point = { leftBottomPoint[0]+dLatitude, leftTopPoint[1] };
        double[] left2Point = { leftTopPoint[0]-dLatitude, leftTopPoint[1] };
        
        
        squareMap.put("leftTopPoint", leftTopPoint);
        squareMap.put("top1Point", top1Point);
        squareMap.put("top2Point", top2Point);
        squareMap.put("rightTopPoint", rightTopPoint);
        squareMap.put("right1Point", right1Point);
        squareMap.put("right2Point", right2Point);
        squareMap.put("rightBottomPoint", rightBottomPoint);
        squareMap.put("down1Point", down1Point);
        squareMap.put("down2Point", down2Point);
        squareMap.put("leftBottomPoint", leftBottomPoint);
        squareMap.put("left1Point", left1Point);
        squareMap.put("left2Point", left2Point);
        
        
        for(Entry<String, double[]> entry:squareMap.entrySet()){
        	System.out.println(entry.getKey()+":"+entry.getValue()[1]+","+entry.getValue()[0]);
        }
        
        return squareMap;
    }

}
